import { MenuTypeEnum } from '@/enums/MenuTypeEnum'
import { get, post } from '@/service/request'

// 根据父级Id获取用户菜单树
export function getTreeByParentId(params?: { name?: string }) {
  return get<MenuData[]>('/upms/menu/getTreeByParentId', params)
}

//获取菜单树 不含按钮
export function queryMenuAndTable() {
  return get('/upms/menu/queryMenuAndTable')
}

//添加菜单
export function addMenu(data: MenuForm) {
  return post('/upms/menu/save', data)
}

//删除菜单
export function removeMenu(id: string) {
  return post('/upms/menu/removeById', { id })
}

//编辑菜单
export function updateMenu(data: MenuForm) {
  return post('/upms/menu/update', data)
}

/** 菜单视图对象 */
export interface MenuData {
  /** 子菜单 */
  children?: MenuData[]
  /** 菜单ID */
  id?: string
  /** 菜单ID 兼容多个接口，有的叫id 有的叫menuId 非常乱的后端 */
  menuId?: string
  /** 父菜单ID */
  parentId?: string
  /** 菜单名称 */
  name?: string
  /** ICON */
  icon?: string
  /** 排序 */
  sortOrder?: number
  /** 路由名称 */
  routeName?: string
  /** 路由路径 */
  path?: string
  /** 组件路径 */
  component?: string
  /** 跳转路由路径 */
  redirect?: string
  /** 菜单 */
  type?: MenuTypeEnum
  /** 权限标识 */
  permission?: string
  /** 【菜单】是否开启页面缓存 (1-是 0-否) */
  keepAlive?: number
  /** 菜单是否可见(1-是 0-否) */
  visible: number
  /** 【目录】只有一个子路由是否始终显示 (1-是 0-否) */
  alwaysShow?: number
}

export interface MenuForm {
  /** 菜单ID */
  id?: string
  /** 菜单ID 兼容多个接口，有的叫id 有的叫menuId 非常乱的后端 */
  menuId?: string
  /** 父菜单ID */
  parentId?: string
  /** 菜单名称 */
  name?: string
  /** ICON */
  icon?: string
  /** 排序 */
  sortOrder?: number
  /** 路由名称 */
  routeName?: string
  /** 路由路径 */
  path?: string
  /** 组件路径 */
  component?: string
  /** 跳转路由路径 */
  redirect?: string
  /** 菜单 */
  type?: MenuTypeEnum
  /** 权限标识 */
  permission?: string
  /** 【菜单】是否开启页面缓存 (1-是 0-否) */
  keepAlive?: number
  /** 菜单是否可见(1-是 0-否) */
  visible: number
  /** 【目录】只有一个子路由是否始终显示 (1-是 0-否) */
  alwaysShow?: number
}
